package com.tyam.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import com.tyam.bean.Receita;

public class ReceitaDAOHibernate implements ReceitaDAO {

	HibernateDAOFactory hibernateDAOFactory = null;
	HibernateDAO<Receita> hibernateDAO = null;

	public ReceitaDAOHibernate() {
		hibernateDAOFactory = new HibernateDAOFactory();
		hibernateDAO = hibernateDAOFactory.getReceitaDAO();
	}
	
	@Override
	public boolean inserir(Receita receita) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.add(receita);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 
		return ok;
	}

	@Override
	public boolean alterar(Receita receita) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.update(receita);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		}

		return ok;
	}

	@Override
	public boolean excluir(Receita receita) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.remove(receita);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 

		return ok;
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List<Receita> getSelecionar(String descricao) {
		 
		
	    Criteria criteria = hibernateDAO.getSession().createCriteria(Receita.class);
	    criteria.add(Restrictions.like("descricao",descricao, MatchMode.ANYWHERE));
	    List<Receita> lista = criteria.list();

		return lista;
	}	

	@Override
	public Receita getReceita(int codigoReceita) {
		return hibernateDAO.get(codigoReceita);
	}

	@Override
	public List<Receita> getListarTodos() {
		return hibernateDAO.listAll();
	}


}
